//字符串扩展，新增特性
// unicode表示法，遍历接口
//模板字符串，新增方法（10种）
//可能需要安装补丁库babel-polyfill库

{
  console.log('a',`\u0061`);
  console.log('s',`\u20BB7`);   //值大于两个字节的时候，不能正常输出了哦~！

  console.log('s',`\u{20BB7}`); //正常显示     ---区别就是加上一个大括号


}


{
  //es5中
  let s='𠮷';
  console.log('length',s.length);           //长度2
  console.log('0',s.charAt(0));             //第一个位置的字符
  console.log('1',s.charAt(1));
  console.log('at0',s.charCodeAt(0));       //取码值
  console.log('at1',s.charCodeAt(1));

  //es6中
  let s1='𠮷a';
  console.log('length',s1.length);                    //3
  console.log('code0',s1.codePointAt(0));             //----取字符的码值
  console.log('code0',s1.codePointAt(0).toString(16));//----取码值，转成16进制
  console.log('code1',s1.codePointAt(1));
  console.log('code2',s1.codePointAt(2));
}

{
  //给码值，打印对应的字符
  console.log(String.fromCharCode("0x20bb7"));  //es5
  console.log(String.fromCodePoint("0x20bb7")); //es6   这个是正确的结果~！
}

{
  //字符串遍历器接口
    //es5乱码
  let str='\u{20bb7}abc';
  for(let i=0;i<str.length;i++){
    console.log('es5',str[i]);
  }
    //es6就可以正常做到了~！                ------使用频率比较高
  for(let code of str){
    console.log('es6',code);
  }
}

{
  let str="string";
  console.log('includes',str.includes("c"));           //是不是包含某些字符
  console.log('start',str.startsWith('str'));          //是不是以某些字符开始        -----使用频率较高~！
  console.log('end',str.endsWith('ng'));               //是不是以某些字符结束的
}

{
  let str="abc";
  console.log(str.repeat(2));                          //字符串复制--重复           -----使用频率比较高
}

{//『模板』字符串                                                 -----------『重要』
  let name="list";
  let info="hello world";
  let m=`i am ${name},${info}`;                        //不用加上ctrl
  console.log(m);
}

{//重要的es7的草案                                            ---使用频率比较高
  console.log('1'.padStart(2,'0'));                   //补白   返回2个长度，前面用0补
  console.log('1'.padEnd(2,'0'));                     //                 后面用0补
}


//标签『模板』  防止xml攻击/根据不同的语言返回不同的结果
{
  let user={
    name:'list',
    info:'hello world'
  };
  console.log(abc`i am ${user.name},${user.info}`);
  function abc(s,v1,v2){
    console.log(s,v1,v2);
    return s+v1+v2
  }
}

{
  console.log(String.raw`Hi\n${1+2}`);                   //无换行，斜杠不生效！
  console.log(`Hi\n${1+2}`);                             //有换行，
}
